package chapter13;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author : DuJiabao
 * @Date : 2021/2/24 16:18
 * @Project : thinking_in_java
 * @File : null.java
 * @Desc :
 */
public class StartEnd {
  public static String input = "As long as there is injustice, whenever a\n" +
          "Targathian baby cries out, wherever a distress\n" +
          "signal sounds among the stars ... We'll be there.\n" +
          "This fine ship, and this fine crew ... \n" +
          "Never give up! Never surrender!";

  private static class Display {
    private boolean regexPrinted = false;
    private String regex;

    public Display(String regex) {
      this.regex = regex;
    }

    void display(String message) {
      if (!regexPrinted) {
        System.out.println(regex);
        regexPrinted = true;
      }
      System.out.println(message);
    }
  }

  static void examine(String s, String regex) {
    Display d = new Display(regex);
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s);
    while (m.find()) {
      d.display("find() '" + m.group() + "' start = " + m.start() + " end = " + m.end());
    }
    if (m.lookingAt()) {   // 没有重置
      d.display("lookingAt() start = " + m.start() + " end = " + m.end());
    }
    if (m.matches()) {  // 没有重置
      d.display("matches() start = " + m.start() + " end = " + m.end());
    }
  }

  public static void main(String[] args) {
    for (String in : input.split("\n")) {
      System.out.println("input : " + in);
      for (String regex : new String[]{"\\w*ere\\w*", "\\w*ever", "T\\w+", "Never.*?!"}) {
        examine(in, regex);
      }
    }
  }
}
